import Toast from 'tdesign-miniprogram/miniprogram_dist/toast'

const { Config } = require('../../lib/config')
const BASE_URL = Config.BASE_URL
/**
 request.js
 * 封装一个Promise风格的通用请求
 * url - 请求地址
 * option - 包含请求方式、请求参数的配置对象
 */
const request = function (url: string, options: any) {
    wx.showLoading({
        title: '请求中。。。'
    })
    const openid = wx.getStorageSync('openid')
    const token = wx.getStorageSync('token')
    return new Promise((resolve, reject) => {
        wx.request({
            url: BASE_URL + url,
            method: options.method,
            data: options.method == 'GET' ? options.data : JSON.stringify(options.data),
            // header这里根据业务情况自行选择需要还是不需要
            header: {
                Authorization: 'Bearer ' + wx.getStorageSync('token'),
                'Content-type': 'application/json',
                openid,
                token,
                ...options.config
            },
            success: (res: any) => {
                console.log(res.data)
                wx.hideLoading()

                if (res.data.code == 500) {
                    wx.showToast({
                        title: res.data.msg,
                        // @ts-ignore
                        icon: 'error',
                        duration: 2000
                    })
                    reject(res.data.msg)
                } else if (res.data.code == 403) {
                    wx.showToast({
                        title: '登录过期',
                        // @ts-ignore
                        icon: 'error',
                        duration: 2000
                    })
                    wx.navigateTo({
                        url: '/pages/my/login/login'
                    })
                } else {
                    if (res.data.error == 1) {
                        if (res.data.length > 0 && res.data.data[0].errmsg) {
                            wx.showToast({
                                title: res.data.data[0] ? res.data.data[0].errmsg : '暂无数据',
                                icon: 'error',
                                duration: 2000
                            })
                            resolve({ data: [], error: 1, errmsg: res.data.data[0].errmsg, count: 0 })
                        } else {
                            wx.showToast({
                                title: res.data.data[0] ? res.data.data[0].errmsg : '暂无数据',
                                icon: 'error',
                                duration: 2000
                            })
                            resolve(res)
                        }
                    } else {
                        // wx.showToast({
                        //     title: res.data.msg,
                        //     icon: 'success',
                        //     duration: 1000
                        // })
                        resolve(res)
                    }
                }
            },
            fail: err => {
                console.log(err)
                wx.hideLoading()
                reject(err)
            }
        })
    })
}

module.exports = {
    //封装get方法
    get(url: string, data: any) {
        return request(url, {
            method: 'GET',
            data
        })
    },
    //封装post方法
    post(url: string, data: any, config: any) {
        return request(url, {
            method: 'POST',
            data,
            config
        })
    }
}
